package ar.org.cfired.creditos;

import ar.org.cfired.creditos.Solicitud;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.hibernate.Session;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessInstance;

import ar.org.cfired.creditos.gui.Funcionalidad;
import ar.org.cfired.hibernate.utils.HibernateUtil;


public class PruebaSolicitudWeb {

	public static void main(String[] args) {
	        PruebaSolicitudWeb mgr = new PruebaSolicitudWeb();

	       // if (args[0].equals("store")) {
	      //      mgr.createAndStoreFuncionalidad("estado", "funcionalidad", 1);
	        //}
	mgr.leer();
	        HibernateUtil.getSessionFactory().close();
	    }

	    private void createAndStoreFuncionalidad(String estado, String funcionalidad, int secuencia) {
	        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	        session.beginTransaction();

	        Funcionalidad func = new Funcionalidad();
	        func.setEstado(estado);
	        func.setFuncion(funcionalidad);
	        func.setSecuencia(secuencia);
	        
	        session.save(func);

	        session.getTransaction().commit();
	    }

	    private void leer() {
			List<Solicitud> respuesta;
			Session session = HibernateUtil.getSessionFactory().getCurrentSession();

			session.beginTransaction();
			
	        respuesta = (List<Solicitud>) session.createQuery("from Solicitud where cre_cargado_dprocess=0").list();

	        System.out.println( respuesta.size() + " message(s) found:" );

	        String textoFinal = "";
	        Map<String,Object> variables;
	        for ( Iterator<Solicitud> iter = respuesta.iterator(); iter.hasNext(); ) {
	        	Solicitud loadedMsg = (Solicitud) iter.next();
	            textoFinal += loadedMsg.getCreApoderadoEmail() +  " \n";
	            
	            variables = loadedMsg.getVariables(session);
	            
	    		ExecutionService executionService = new Configuration().buildProcessEngine().getExecutionService();
	    		ProcessInstance processInstance = null;
	    		processInstance = executionService.startProcessInstanceByKey("Creditos", variables);	            
	            
	    		loadedMsg.setCreCargadoDprocess(1);
	    		session.save(loadedMsg);
	            
	            //System.out.println( loadedMsg );
	        }
	        session.getTransaction().commit();
	        System.out.println(textoFinal);
		//	execution.setVariable("cabecera", textoFinal);			

//			session.getSessionFactory().close();

	    }   

}
